#define _CRT_SECURE_NO_WARNINGS 1
#include <string.h>
#include <stdio.h>
#define MAX 1024
typedef struct {
    int len;
    int num[MAX];
} BigInt;
void strToInt(char* s, BigInt* a) {
    a->len = strlen(s);
    for (int i = 0; i < a->len; i++) {
        a->num[i] = s[a->len - 1 - i] - '0';
    }
}
void print(BigInt* a) {
    for (int i = a->len - 1; i >= 0; i--) {
        printf("%d", a->num[i]);
    }
    printf("\n");
}
// 高精度加法
void add(BigInt* a, BigInt* b, BigInt* c) {
    int t = 0;
    int n = a->len > b->len ? a->len : b->len;
    for (int i = 0; i < n; i++) {
        int temp = t;
        if (i < a->len) temp += a->num[i];
        if (i < b->len) temp += b->num[i];
        c->num[i] = temp % 10;
        t = temp / 10;
    }
    c->len = n;
    if (t) {
        c->num[c->len++] = t;
    }
}
// 高精度减法a > b
void sub(BigInt* a, BigInt* b, BigInt* c) {
    int t = 0;
    for (int i = 0; i < a->len; i++) {
        int diff = a->num[i] - (i < b->len ? b->num[i] : 0) - t;
        if (diff < 0) {
            diff += 10;
            t = 1;
        }
        else {
            t = 0;
        }
        c->num[i] = diff;
    }
    c->len = a->len;
    while (c->len > 1 && c->num[c->len - 1] == 0) c->len--;
}
// 高精度乘法
void multi(BigInt* a, BigInt* b, BigInt* c) {
    memset(c->num, 0, sizeof(c->num));
    for (int i = 0; i < a->len; i++) {
        int t = 0;
        for (int j = 0; j < b->len; j++) {
            int temp = c->num[i + j] + a->num[i] * b->num[j] + t;
            c->num[i + j] = temp % 10;
            t = temp / 10;
        }
        int k = i + b->len;
        while (t) {
            int temp = c->num[k] + t;
            c->num[k] = temp % 10;
            t = temp / 10;
            k++;
        }
    }
    c->len = a->len + b->len;
    while (c->len > 1 && c->num[c->len - 1] == 0) c->len--;
}
int check(BigInt* a, BigInt* b) {
    if (a->len == b->len) {
        for (int i = b->len - 1; i >= 0; i--) {
            if (a->num[i] != b->num[i]) {
                return a->num[i] - b->num[i];
            }
        }
    }
    else {
        return a->len - b->len;
    }
    return 0;
}
int main() {
    char a[1024], b[1024], c[1024];
    scanf("%s %s %s", a, b, c);
    int x = 0, y = 0;
    if (a[0] == '-') {
        x = 1;
        memmove(a, a + 1, strlen(a));
        if (b[0] == '-') {
            x = 0;
            memmove(b, b + 1, strlen(b));
        }
    }
    else {
        if (b[0] == '-') {
            x = 1;
            memmove(b, b + 1, strlen(b));
        }
    }
    if (c[0] == '-') {
        y = 1;
        memmove(c, c + 1, strlen(c));
    }
    BigInt ai, bi, ci;
    strToInt(a, &ai);
    strToInt(b, &bi);
    strToInt(c, &ci);

    BigInt temp;
    multi(&ai, &bi, &temp);
    if (x == 0 && y == 0) {
        BigInt temp2;
        add(&temp, &ci, &temp2);
        print(&temp2);
    }
    else {
        if (x == 1 && y == 1) {
            BigInt temp2;
            add(&temp, &ci, &temp2);
            printf("-");
            print(&temp2);
        }
        else if (x == 0 && y == 1) {
            int k = check(&temp, &ci);
            if (k) {
                BigInt temp2;
                sub(&temp, &ci, &temp2);
                print(&temp2);
            }
            else {
                BigInt temp2;
                sub(&ci, &temp, &temp2);
                printf("-");
                print(&temp2);
            }
        }
        else {
            int k = check(&temp, &ci);
            if (k) {
                BigInt temp2;
                sub(&temp, &ci, &temp2);
                printf("-");
                print(&temp2);
            }
            else {
                BigInt temp2;
                sub(&ci, &temp, &temp2);
                print(&temp2);
            }
        }
    }

    return 0;
}

